package testes;

import java.util.ArrayList;

import junit.framework.Assert;

import org.junit.Test;

import bean.Jogador;
import bean.Grupo;


public class JogadorTest {

	@Test(expected=IllegalArgumentException.class)
	public void testJogador() throws Exception {
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador(null , "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", null, "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "15/11/1990", "", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "15/11/1990", null, "Brasil", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "", "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "15/11/1990", "Campina Grande", null, "lucas.s.sampaio@gmail.com", "123");
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "", "123");
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", null, "123");
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", null);
		new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "");
	}

	@Test
	public void testNome() throws Exception{
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("nome diferente", "Lucas", lucas.getNome());
		lucas.setNome("Lucas Sampaio");
		Assert.assertEquals("nome diferente", "Lucas Sampaio", lucas.getNome());
	}

	@Test
	public void testData() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("data diferente", "15/11/1990", lucas.getData());
		lucas.setData("15/11/90");
		Assert.assertEquals("data diferente", "15/11/90", lucas.getData());
	}

	@Test
	public void testNaturalidade() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("naturalidade diferente", "Campina Grande", lucas.getNaturalidade());
		lucas.setNaturalidade("Paraiba");
		Assert.assertEquals("naturalidade diferente", "Paraiba", lucas.getNaturalidade());
	}

	@Test
	public void testPaisQueTorce() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("pais que torce errado", "Brasil", lucas.getPaisQueTorce());
	}

	@Test
	public void testEmail() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("email diferente", "lucas.s.sampaio@gmail.com", lucas.getEmail());
	}

	@Test
	public void testGetSenha() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("senha errada", "123", lucas.getSenha());
		lucas.setSenha("321");
		Assert.assertEquals("senha errada", "321", lucas.getSenha());
	}
	
	@Test
	public void testGrupo() throws Exception {
		
		ArrayList<Grupo> grupos = new ArrayList<Grupo>();
		
		Jogador j1 = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		
		Grupo g1 = new Grupo("Grupo1", j1);
		Grupo g2 = new Grupo("Grupo2", j1);
		
		j1.adicionaGrupo(g1);
		j1.adicionaGrupo(g2);
		
		grupos.add(g1);
		grupos.add(g2);

		Assert.assertEquals("Lista de Grupos Errada", grupos, j1.getGrupos());
		
		j1.sairDoGrupo(g1);
		grupos.remove(g1);
		Assert.assertEquals("Lista de Grupos Errada", grupos, j1.getGrupos());
	}

	@Test
	public void testToString() throws Exception {
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Assert.assertEquals("toString errada", "Nome: Lucas\nData de Nascimento: 15/11/1990\nNaturalidade: Campina Grande\nPais que torce: Brasil\nEmail: lucas.s.sampaio@gmail.com", lucas.toString());
	}
	

	@Test
	public void testEqualsObject() throws Exception{
		Jogador lucas = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas.s.sampaio@gmail.com", "123");
		Jogador maradona = new Jogador("Maradona", "4/20/1943", "Buenos Ares", "Argentina", "lucas.s.sampaio@gmail.com", "123");
		Jogador lucas2 = new Jogador("Lucas", "15/11/1990", "Campina Grande", "Brasil", "lucas@gmail.com", "123");
		Assert.assertTrue(lucas.equals(maradona));
		Assert.assertFalse(lucas.equals(lucas2));
	}
	
}
